/* This is a generated file by gen_country_map.sh. Don't edit, edit the source instead. */
#include "sys_queue.h"
#include <string.h>
#include <stdlib.h>

struct country
{
    LIST_ENTRY(country) link;
    char *code;
    char *country;
};

static int initialized = 0;

static LIST_HEAD(, country) country_list_head = LIST_HEAD_INITIALIZER();

static void add_country(const char *code, const char *country)
{
    struct country *c = calloc(1, sizeof(struct country));
    c->code = strdup(code);
    c->country = strdup(country);

    LIST_INSERT_HEAD(&country_list_head, c, link);
}

static void country_map_create(void)
{
    add_country("af", "Afghanistan");
    add_country("ax", "Åland Islands");
    add_country("al", "Albania");
    add_country("dz", "Algeria");
    add_country("as", "American Samoa");
    add_country("ad", "Andorra");
    add_country("ao", "Angola");
    add_country("ai", "Anguilla");
    add_country("aq", "Antarctica");
    add_country("ag", "Antigua and Barbuda");
    add_country("ar", "Argentina");
    add_country("am", "Armenia");
    add_country("aw", "Aruba");
    add_country("au", "Australia");
    add_country("at", "Austria");
    add_country("az", "Azerbaijan");
    add_country("bs", "Bahamas");
    add_country("bh", "Bahrain");
    add_country("bd", "Bangladesh");
    add_country("bb", "Barbados");
    add_country("by", "Belarus");
    add_country("be", "Belgium");
    add_country("bz", "Belize");
    add_country("bj", "Benin");
    add_country("bm", "Bermuda");
    add_country("bt", "Bhutan");
    add_country("bo", "Bolivia");
    add_country("ba", "Bosnia and Herzegovina");
    add_country("bw", "Botswana");
    add_country("bv", "Bouvet Island");
    add_country("br", "Brazil");
    add_country("io", "British Indian Ocean Territory");
    add_country("bn", "Brunei Darussalam");
    add_country("bg", "Bulgaria");
    add_country("bf", "Burkina Faso");
    add_country("bi", "Burundi");
    add_country("kh", "Cambodia");
    add_country("cm", "Cameroon");
    add_country("ca", "Canada");
    add_country("cv", "Cape Verde");
    add_country("ky", "Cayman Islands");
    add_country("cf", "Central African Republic");
    add_country("td", "Chad");
    add_country("cl", "Chile");
    add_country("cn", "China");
    add_country("cx", "Christmas Island");
    add_country("cc", "Cocos (keeling) Islands");
    add_country("co", "Colombia");
    add_country("km", "Comoros");
    add_country("cg", "Congo");
    add_country("cd", "Congo, the Democratic Republic of the");
    add_country("ck", "Cook Islands");
    add_country("cr", "Costa Rica");
    add_country("ci", "Cote D'ivoire");
    add_country("hr", "Croatia");
    add_country("cu", "Cuba");
    add_country("cy", "Cyprus");
    add_country("cz", "Czech Republic");
    add_country("dk", "Denmark");
    add_country("dj", "Djibouti");
    add_country("dm", "Dominica");
    add_country("do", "Dominican Republic");
    add_country("ec", "Ecuador");
    add_country("eg", "Egypt");
    add_country("sv", "El Salvador");
    add_country("gq", "Equatorial Guinea");
    add_country("er", "Eritrea");
    add_country("ee", "Estonia");
    add_country("et", "Ethiopia");
    add_country("fk", "Falkland Islands (malvinas)");
    add_country("fo", "Faroe Islands");
    add_country("fj", "Fiji");
    add_country("fi", "Finland");
    add_country("fr", "France");
    add_country("gf", "French Guiana");
    add_country("pf", "French Polynesia");
    add_country("tf", "French Southern Territories");
    add_country("ga", "Gabon");
    add_country("gm", "Gambia");
    add_country("ge", "Georgia");
    add_country("de", "Germany");
    add_country("gh", "Ghana");
    add_country("gi", "Gibraltar");
    add_country("gr", "Greece");
    add_country("gl", "Greenland");
    add_country("gd", "Grenada");
    add_country("gp", "Guadeloupe");
    add_country("gu", "Guam");
    add_country("gt", "Guatemala");
    add_country(" gg", "Guernsey");
    add_country("gn", "Guinea");
    add_country("gw", "Guinea-bissau");
    add_country("gy", "Guyana");
    add_country("ht", "Haiti");
    add_country("hm", "Heard Island and Mcdonald Islands");
    add_country("va", "Holy See (vatican City State)");
    add_country("hn", "Honduras");
    add_country("hk", "Hong Kong");
    add_country("hu", "Hungary");
    add_country("is", "Iceland");
    add_country("in", "India");
    add_country("id", "Indonesia");
    add_country("ir", "Iran, Islamic Republic of");
    add_country("iq", "Iraq");
    add_country("ie", "Ireland");
    add_country("im", "Isle of Man");
    add_country("il", "Israel");
    add_country("it", "Italy");
    add_country("jm", "Jamaica");
    add_country("jp", "Japan");
    add_country("je", "Jersey");
    add_country("jo", "Jordan");
    add_country("kz", "Kazakhstan");
    add_country("ke", "Kenya");
    add_country("ki", "Kiribati");
    add_country("kp", "Korea, Democratic People's Republic of");
    add_country("kr", "Korea, Republic of");
    add_country("kw", "Kuwait");
    add_country("kg", "Kyrgyzstan");
    add_country("la", "Lao People's Democratic Republic");
    add_country("lv", "Latvia");
    add_country("lb", "Lebanon");
    add_country("ls", "Lesotho");
    add_country("lr", "Liberia");
    add_country("ly", "Libyan Arab Jamahiriya");
    add_country("li", "Liechtenstein");
    add_country("lt", "Lithuania");
    add_country("lu", "Luxembourg");
    add_country("mo", "Macao");
    add_country("mk", "Macedonia, the Former Yugoslav Republic of");
    add_country("mg", "Madagascar");
    add_country("mw", "Malawi");
    add_country("my", "Malaysia");
    add_country("mv", "Maldives");
    add_country("ml", "Mali");
    add_country("mt", "Malta");
    add_country("mh", "Marshall Islands");
    add_country("mq", "Martinique");
    add_country("mr", "Mauritania");
    add_country("mu", "Mauritius");
    add_country("yt", "Mayotte");
    add_country("mx", "Mexico");
    add_country("fm", "Micronesia, Federated States of");
    add_country("md", "Moldova, Republic of");
    add_country("mc", "Monaco");
    add_country("mn", "Mongolia");
    add_country("ms", "Montserrat");
    add_country("ma", "Morocco");
    add_country("mz", "Mozambique");
    add_country("mm", "Myanmar");
    add_country("na", "Namibia");
    add_country("nr", "Nauru");
    add_country("np", "Nepal");
    add_country("nl", "Netherlands");
    add_country("an", "Netherlands Antilles");
    add_country("nc", "New Caledonia");
    add_country("nz", "New Zealand");
    add_country("ni", "Nicaragua");
    add_country("ne", "Niger");
    add_country("ng", "Nigeria");
    add_country("nu", "Niue");
    add_country("nf", "Norfolk Island");
    add_country("mp", "Northern Mariana Islands");
    add_country("no", "Norway");
    add_country("om", "Oman");
    add_country("pk", "Pakistan");
    add_country("pw", "Palau");
    add_country("ps", "Palestinian Territory, Occupied");
    add_country("pa", "Panama");
    add_country("pg", "Papua New Guinea");
    add_country("py", "Paraguay");
    add_country("pe", "Peru");
    add_country("ph", "Philippines");
    add_country("pn", "Pitcairn");
    add_country("pl", "Poland");
    add_country("pt", "Portugal");
    add_country("pr", "Puerto Rico");
    add_country("qa", "Qatar");
    add_country("re", "Reunion");
    add_country("ro", "Romania");
    add_country("ru", "Russian Federation");
    add_country("rw", "Rwanda");
    add_country("sh", "Saint Helena");
    add_country("kn", "Saint Kitts and Nevis");
    add_country("lc", "Saint Lucia");
    add_country("pm", "Saint Pierre and Miquelon");
    add_country("vc", "Saint Vincent and the Grenadines");
    add_country("ws", "Samoa");
    add_country("sm", "San Marino");
    add_country("st", "Sao Tome and Principe");
    add_country("sa", "Saudi Arabia");
    add_country("sn", "Senegal");
    add_country("cs", "Serbia and Montenegro");
    add_country("sc", "Seychelles");
    add_country("sl", "Sierra Leone");
    add_country("sg", "Singapore");
    add_country("sk", "Slovakia");
    add_country("si", "Slovenia");
    add_country("sb", "Solomon Islands");
    add_country("so", "Somalia");
    add_country("za", "South Africa");
    add_country("gs", "South Georgia and the South Sandwich Islands");
    add_country("es", "Spain");
    add_country("lk", "Sri Lanka");
    add_country("sd", "Sudan");
    add_country("sr", "Suriname");
    add_country("sj", "Svalbard and Jan Mayen");
    add_country("sz", "Swaziland");
    add_country("se", "Sweden");
    add_country("ch", "Switzerland");
    add_country("sy", "Syrian Arab Republic");
    add_country("tw", "Taiwan, Province of China");
    add_country("tj", "Tajikistan");
    add_country("tz", "Tanzania, United Republic of");
    add_country("th", "Thailand");
    add_country("tl", "Timor-leste");
    add_country("tg", "Togo");
    add_country("tk", "Tokelau");
    add_country("to", "Tonga");
    add_country("tt", "Trinidad and Tobago");
    add_country("tn", "Tunisia");
    add_country("tr", "Turkey");
    add_country("tm", "Turkmenistan");
    add_country("tc", "Turks and Caicos Islands");
    add_country("tv", "Tuvalu");
    add_country("ug", "Uganda");
    add_country("ua", "Ukraine");
    add_country("ae", "United Arab Emirates");
    add_country("gb", "United Kingdom");
    add_country("us", "United States");
    add_country("um", "United States Minor Outlying Islands");
    add_country("uy", "Uruguay");
    add_country("uz", "Uzbekistan");
    add_country("vu", "Vanuatu");
    add_country("ve", "Venezuela");
    add_country("vn", "Viet Nam");
    add_country("vg", "Virgin Islands, British");
    add_country("vi", "Virgin Islands, U.s.");
    add_country("wf", "Wallis and Futuna");
    add_country("eh", "Western Sahara");
    add_country("ye", "Yemen");
    add_country("zm", "Zambia");
    add_country("zw", "Zimbabwe");
}

const char *country_map_lookup(const char *code)
{
    struct country *c;

    if(!initialized)
    {
        country_map_create();
        initialized = 1;
    }
    
    LIST_FOREACH(c, &country_list_head, link)
    {
        if(strcmp(c->code, code) == 0)
            return c->country;
    }

    return NULL;
}
